<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 导入mapbox依赖 -->
    <script src='https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.js'></script>
    <link href='https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.css' rel='stylesheet' />
    <style>
        * {
            margin: 0;
            padding: 0
        }

        #map {
            width: 100vw;
            height: 100vh;
        }
    </style>
</head>

<body>
    <!-- 2、设置地图容器的挂载点 -->
    <div id="map">

    </div>
    <script>
        const gaode = {
            "version": 8,
            "sources": {
                "raster-tiles": {
                    "type": "raster",
                    "tiles": ["http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}"],
                    "tileSize": 256
                }
            },
            "layers": [{
                "id": "simple-tiles",
                "type": "raster",
                "source": "raster-tiles",
                "minzoom": 0,
                "maxzoom": 22
            }]
        }
        /* 3、实例化地图 */
        mapboxgl.accessToken = 'pk.eyJ1IjoiY2hlbmdiZW5jaGFvIiwiYSI6ImNsODU3aGRiODA0Y2UzcHBzZmFlcmdqZ2sifQ.8k59W_pB_Riwe6o-MneRlA'
        const map = new mapboxgl.Map({
            container: "map",
            /* style-layers */
            style: 'mapbox://styles/mapbox/streets-v12',
            center: [114.30, 30.50]
        })
        // 点击那里就在那里加一个点：
        // 方法1：点击一次就加一个图层

        // 方法2：点击一次就在数据源上加一个点【添加到同一图层】。
        let data = {
            "type": "FeatureCollection",
            "features": []
        }
        map.addSource('point-source', {
            type: 'geojson',
            data,
        })
        map.addLayer({
            id: 'Point',
            type: "circle",
            //设置数据源
            source: 'point-source',
            //绘制参数
            paint: {
                'circle-opacity': 0.8,
                "circle-radius": 15,
                "circle-color": "#ff2d51",
                "circle-stroke-width": 4,
                //设置边线颜色
                "circle-stroke-color": '#ffcc33',
                'circle-opacity': 0.5
            }
        })
        map.on('click', evt => {
            // console.log(evt);
            let { lng, lat } = evt.lngLat
            // console.log(lng, lat);
            let data_add = {
                "type": "Feature",
                "geometry": {
                    "type": 'Point',
                    "coordinates": [lng, lat]
                }
            }

        })
        data.features.push(data_add)
        // 不行！
    </script>
</body>

</html>